/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package com.plian.system.mapper.zcgl;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.plian.system.entity.zcgl.ZcglStaffManagement;
import com.plian.system.vo.zcgl.ZcglStaffManagementChartsVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 员工档案 Mapper 接口
 *
 * @author gangan
 * @since 2019-10-14
 */
public interface ZcglStaffManagementMapper extends BaseMapper<ZcglStaffManagement> {

	/**
	 * 员工档案花名册/企业领导/后备干部/企业人才统计表 取数
	 * @param companyNameIds
	 * @param staffName
	 * @param genderIds
	 * @param jobNameId
	 * @param educationalIds
	 * @param technicalPosition
	 * @param companyInitiationTimeStart
	 * @param companyInitiationTimeEnd
	 * @param workTimeStart
	 * @param workTimeEnd
	 * @param politicCountenanceIds
	 * @param isReserveCadre
	 * @param isCorporateTalent
	 * @param managementCategoryIds
	 * @return
	 */
	List<ZcglStaffManagement> reportDataPage(@Param("companyNameIds") List<String> companyNameIds,
									  @Param("staffName") String staffName,
									  @Param("genderIds") List<String> genderIds,
									  @Param("jobNameId") String jobNameId,
									  @Param("educationalIds") List<String> educationalIds,
									  @Param("technicalPosition") String technicalPosition,
									  @Param("companyInitiationTimeStart") String companyInitiationTimeStart,
									  @Param("companyInitiationTimeEnd") String companyInitiationTimeEnd,
									  @Param("workTimeStart") String workTimeStart,
									  @Param("workTimeEnd") String workTimeEnd,
									  @Param("politicCountenanceIds") List<String> politicCountenanceIds,
									  @Param("isReserveCadre") int isReserveCadre,
									  @Param("isCorporateTalent") int isCorporateTalent,
									  @Param("managementCategoryIds") List<String> managementCategoryIds);


	/**
	 * 获取员工档案 性别统计数据
	 * @param companyNameId 单位
	 * @return
	 */
	List<ZcglStaffManagementChartsVO>  reportChartsGender(@Param("companyNameId") Long companyNameId);

	/**
	 * 获取员工档案 政治面貌统计数据
	 * @param companyNameId 单位
	 * @return
	 */
	List<ZcglStaffManagementChartsVO>  reportChartsPoliticCountenance(@Param("companyNameId") Long companyNameId);

	/**
	 * 获取员工档案 最高学历统计数据
	 * @param companyNameId 单位
	 * @return
	 */
	List<ZcglStaffManagementChartsVO>  reportChartsEducational(@Param("companyNameId") Long companyNameId);

	/**
	 * 获取员工档案 参加工作时间统计数据
	 * @param companyNameId 单位
	 * @return
	 */
	List<ZcglStaffManagementChartsVO>  reportChartsWorkTime(@Param("companyNameId") Long companyNameId);

	/**
	 * 根据DEF1获取员工（导入需要）
	 * @param excelCode Excel中的人员编码
	 * @return List<StaffFiles></>
	 */
	List<ZcglStaffManagement> searchStaffByExcelCode(@Param("excelCode") String excelCode);

	/**
	 * 根据编号获取员工
	 * @param staffCode 编号
	 * @return List<StaffFiles>
	 */
	List<ZcglStaffManagement> searchStaffByStaffCode(@Param("staffCode") String staffCode);
}
